Una rappresentazione intermedia è la struttura dati o il codice usato internamente da un compilatore o macchina virtuale per rappresentare il codice sorgente. La rappresentazione intermedia è progettata per agevolare un'ulteriore elaborazione, in termini di ottimizzazione o traduzione.[1] Una "buona" rappresentazione deve essere accurata – in grado di rappresentare il codice sorgente senza perdita di informazioni[2] – e indipendente dal linguaggio di partenza e di arrivo.[1] Una rappresentazione intermedia può essere una struttura dati in memoria o uno speciale codice basato su pila o tupla leggibile dal programma.[3] Nel secondo caso, si parla di linguaggio intermedio.
Un tipico esempio è da trovarsi nei compilatori più moderni. L'interprete di CPython trasforma il testo leggibile che rappresenta un programma in una struttura intermedia a grafo che permette l'analisi del flusso e il riordino prima dell'esecuzione. L'uso di una rappresentazione intermedia come questa permette a sistemi compilatori come GNU Compiler Collection e LLVM di essere adoperati da molti diversi linguaggi di partenza per generare codice adatto a svariate architetture.